home *** CD-ROM | disk | FTP | other *** search
- #include "xsb.h"
- #include "startup.h"
-
- extern struct Library *XSBBase;
- extern char xsbname[];
- static struct TextAttr top80={"topaz.font",8,0,0};
-
- void doprefs(char *name)
- {
- struct XSBParams *xp,*xpp;
- struct Window *w;
- struct Gadget *g=0,*lastg,*ga[10],*gp;
- struct NewGadget ng;
- int argcount=0;
- int c,ypos=15;
- struct IntuiMessage *im;
- struct VisualInfo *vi=0;
- long code,class;
- int running=1;
-
- if(!(XSBBase=OldOpenLibrary(name))) {
- doreq("XSBCX","Couldn't open blanker library\n%s","Cancel",name);
- return;
- }
-
- if(!(xp=XSBGetParams())) {
- doreq(name,"This blanker don't\nhas preferences","Cancel");
- CloseLibrary(XSBBase);
- return;
- }
- xpp=xp;
- while(xpp) { argcount++; xpp=xpp->next; }
- xpp=xp;
-
- if(!(w=OpenWindowTags(0,WA_Top,30,WA_Left,120,
- WA_Width,320,WA_Height,50+argcount*16,
- WA_IDCMP,GADGETUP|GADGETDOWN|MOUSEMOVE|CLOSEWINDOW,
- WA_AutoAdjust,TRUE,
- WA_Title,name,
- WA_Flags,ACTIVATE|RMBTRAP|WINDOWDRAG|WINDOWCLOSE|WINDOWDEPTH,
- TAG_DONE))) goto xit;
-
- vi=GetVisualInfo(w->WScreen,TAG_DONE);
- lastg=CreateContext(&g);
-
- ng.ng_LeftEdge=19; ng.ng_TopEdge=30+argcount*16;
- ng.ng_Width=60; ng.ng_Height=13;
- ng.ng_GadgetText="Save";
- ng.ng_GadgetID=20;
- ng.ng_TextAttr=&top80;
- ng.ng_Flags=PLACETEXT_IN;
- ng.ng_VisualInfo=vi;
- lastg=CreateGadget(BUTTON_KIND,lastg,&ng,TAG_DONE);
-
- ng.ng_GadgetText="Load";
- ng.ng_LeftEdge=92;
- ng.ng_GadgetID++;
- lastg=CreateGadget(BUTTON_KIND,lastg,&ng,TAG_DONE);
-
- ng.ng_GadgetText="Use";
- ng.ng_LeftEdge=165;
- ng.ng_GadgetID++;
- lastg=CreateGadget(BUTTON_KIND,lastg,&ng,TAG_DONE);
-
- ng.ng_GadgetText="Cancel";
- ng.ng_LeftEdge=240;
- ng.ng_GadgetID++;
- lastg=CreateGadget(BUTTON_KIND,lastg,&ng,TAG_DONE);
-
- c=0;
- ng.ng_LeftEdge=100; ng.ng_Width=170; ng.ng_Height=14; ng.ng_GadgetID=1;
- ng.ng_Flags=NG_HIGHLABEL|PLACETEXT_LEFT;
- while(xpp) {
- ng.ng_GadgetText=xpp->text;
- ng.ng_TopEdge=ypos;
- ypos+=16;
- switch(xpp->type) {
- case XSBP_BOOL: ng.ng_TopEdge++; lastg=CreateGadget(CHECKBOX_KIND,lastg,&ng,GTCB_Checked,xpp->value->xsb_arg,TAG_DONE); ng.ng_TopEdge--; break;
- case XSBP_STRING: lastg=CreateGadget(STRING_KIND,lastg,&ng,GTST_MaxChars,40,GTST_String,xpp->value->xsb_string,TAG_DONE); break;
- case XSBP_INTEGER: lastg=CreateGadget(INTEGER_KIND,lastg,&ng,GTIN_MaxChars,40,GTIN_Number,xpp->value->xsb_arg,TAG_DONE); break;
- case XSBP_CYCLE: lastg=CreateGadget(CYCLE_KIND,lastg,&ng,GTCY_Labels,xpp->labels,GTCY_Active,xpp->value->xsb_arg,TAG_DONE); break;
- case XSBP_SLIDER: lastg=CreateGadget(SLIDER_KIND,lastg,&ng,
- GTSL_Max,xpp->max,GTSL_Min,xpp->min,
- GTSL_Level,xpp->value->xsb_arg,
- PGA_Freedom,LORIENT_HORIZ,
- GTSL_MaxLevelLen,4,
- GTSL_LevelPlace,PLACETEXT_RIGHT,
- GA_RelVerify,TRUE,
- GTSL_LevelFormat,"%-4ld",TAG_DONE); break;
- }
- ga[c++]=lastg;
- xpp=xpp->next;
- ng.ng_GadgetID++;
- }
-
- AddGList(w,g,-1,-1,0);
- RefreshGList(g,w,0,-1);
- GT_RefreshWindow(w,0);
-
- while(running) {
- while(!(im=GT_GetIMsg(w->UserPort))) WaitPort(w->UserPort);
- code=im->Code; class=im->Class;
- gp=im->IAddress;
- GT_ReplyIMsg(im);
- if(class==CLOSEWINDOW) break;
- if(class==GADGETUP) {
- switch(gp->GadgetID) {
- case 20:
- case 21:
- case 22:
- case 23: running=0; break;
- }
- }
- }
-
- xit:
- if(g) FreeGadgets(g);
- if(vi) FreeVisualInfo(vi);
- if(w) CloseWindow(w);
- CloseLibrary(XSBBase);
- }
-